<?php
/**
 * 使用 ArrayAccess 的方式加载配置文件，提供像访问数组一样访问对象的能力的接口，
 * 这里的理解是 前台通过数组访问的还是 对象自己的 $configs 属性，这是这个属性是通过 require 文件返回的数组生成的
 * User: yuesir
 * Date: 2016/4/29
 * Time: 22:31
 */

namespace Lib;


class Config implements \ArrayAccess{
    protected $configs = array();
    protected $path;

    public function __construct($path)
    {
        $this->path = $path;
    }

    public function offsetExists ($offset)
    {

    }

    /**
     * 比如好获取 controller 下面的配置，会先将 controller.php 包含进来
     * 然后返回对应的值
     * @param mixed $offset
     *  $config = new Lib\Config(BASE_DIR . '/Config');
     *  var_dump($config['controller']);
     */
    public function offsetGet ($offset)
    {
        if(empty($this->configs[$offset])) {
            $file_path = $this->path . '/' . $offset . '.php';
            $config = require $file_path;
            $this->configs[$offset] = $config;
        }

        return $this->configs[$offset];
    }

    public function offsetSet ($offset ,$value)
    {

    }
    public function offsetUnset ($offset)
    {

    }
}